package com.flyqiu.flow.api.format;

import com.alibaba.fastjson2.JSONObject;

import java.nio.charset.StandardCharsets;

public interface FlyQiuFlowBpmnFormatManage {
    void registerBpmnFormat(IBpmnFormat bpmnFormat);

    /**
     * 转换成为 startBpmn配置
     *
     * @param data
     * @return
     */
    JSONObject convertStartBpmn(String data, String currentFormatType);

    JSONObject convertStartBpmn(byte[] bytes, String currentFormatType);

    /**
     * startBpmn转换成为目标类型
     *
     * @param data
     * @return
     */
    default String convertTargetFormat(JSONObject data, String targetFormatType) {
        return convertTargetFormat(data.toJSONString(), targetFormatType);
    }

    /**
     * startBpmn转换成为目标类型
     *
     * @param jsonStr          json字符串
     * @param targetFormatType 目标格式
     * @return 目标格式字符串
     */
    default String convertTargetFormat(String jsonStr, String targetFormatType) {
        byte[] bytes = convertTargetFormatByte(jsonStr.getBytes(), targetFormatType);
        return new String(bytes, StandardCharsets.UTF_8);
    }

    /**
     * startBpmn转换成为目标类型
     *
     * @param jsonStrData      json字符串byte[]
     * @param targetFormatType 目标格式
     * @return 目标格式字符串byte[]
     */
    byte[] convertTargetFormatByte(byte[] jsonStrData, String targetFormatType);
}
